首先在models新增以下程式碼
@register_snippet
class BlogCategory(models.Model):
name = models.CharField(max_length=255)
icon = models.ForeignKey(
'wagtailimages.Image', null=True, blank=True,
on_delete=models.SET_NULL, related_name='+'
)
panels = [
FieldPanel('name'),
ImageChooserPanel('icon'),
]
def __str__(self):
return self.name
class Meta:
verbose_name_plural = 'blog categories'
其中icon是使用wagtail內建的Image model來處理
@register_snippet代表的是它是一個snippet
之後我們可以在後台的snippet選項新增他
接著同樣的,因為更新了Model
要做makemigrations和migrate
python manage.py makemigrations
python manage.py migrate
接著打開後台,點開左邊的snippet
會有一個Blog Categories
點進去後點選Add blog cateogry
就會看到新增的介面
新增完過後
接著我們還要更改BlogPage
content_panels = Page.content_panels + [
MultiFieldPanel([
FieldPanel('date'),
FieldPanel('categories', widget=forms.CheckboxSelectMultiple),
], heading="Blog information"),
FieldPanel('intro'),
FieldPanel('body'),
]
新增FieldPanel('categories', widget=forms.CheckboxSelectMultiple)把category加到選項中
接著打開新增BlogPage的頁面
就可以在Blog Information那一個block
看到Categories的選項了